"""
2025/07/11 17.16 edited by liuXiuChao
"""
from http import HTTPStatus
from dashscope import ImageSynthesis
from multi_modal.public import get_tongyi_api

def generate_image(user_question: str) -> dict:
    """
    根据user_question来生成图片，返回图片URL和AI的描述信息
    参数：
        user_question: 用户的提问
    return :    一个字典        key                     value
                            image_url               图片的url
                            description             AI对该图像的描述(调用API返回的)
    """
    # 使用用户问题作为提示词
    prompt = user_question
    api_key = get_tongyi_api()

    try:
        # 调用图像生成API
        response = ImageSynthesis.call(
            api_key=api_key,
            # wanx2.1-t2i-turbo  更便宜
            model="wanx2.1-t2i-plus",
            prompt=prompt,
            n=1,
            size='1024*1024'
        )

        if response.status_code == HTTPStatus.OK:
            # 生成成功，处理结果
            result = response.output.results[0]
            image_url = result.url

            # 使用API返回的实际提示词作为描述(如果有的话)
            actual_prompt = result.get('actual_prompt', '')
            if actual_prompt:
                image_description = f"{actual_prompt}"
            else:
                image_description = f"根据提示词「{prompt}」生成的图像"

            return {
                "image_url": image_url,
                "description": image_description
            }
        else:
            # 处理错误情况
            error_message = f"图像生成失败，状态码: {response.status_code}, 错误码: {response.code}, 错误信息: {response.message}"
            return {
                "image_url": "",
                "description": error_message
            }
    except Exception as e:
        # 处理异常
        error_message = f"图像生成过程中发生异常: {str(e)}"
        return {
            "image_url": "",
            "description": error_message
        }


if __name__ == "__main__":
    # 测试例
    res = generate_image("由羊毛毡制成的大熊猫，头戴大檐帽，穿着蓝色警服马甲，扎着腰带，携带警械装备，戴着蓝色手套，"
                         "穿着皮鞋，大步奔跑姿态，毛毡效果，周围是动物王国城市街道商户，高级滤镜，路灯，动物王国，奇妙童趣，憨态可掬，"
                         "夜晚，明亮，自然，可爱，4K，毛毡材质，摄影镜头，居中构图，毛毡风格，皮克斯风格，逆光。")
    for key, value in res.items():
        print(f"{key}: {value}")

